home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / cad / lasi512b.zip / LASICKT.LHI < prev    next >
Text File  |  1996-04-04  |  35KB  |  754 lines

  1. ≡≡  
  2.  
  3. Introduction
  4.  
  5.  Introduction
  6.  
  7.                       LASICKT SPICE Compiler Utility
  8.                       ------------------------------
  9.  
  10.   LASICKT.EXE (LASI circuit) is a LASI CAD System utility program that can
  11.   analyze drawings made using LASI and write a SPICE circuit file. It can
  12.   do both "schematic capture" and "layout capture". LASICKT allows you to
  13.   first draw a schematic (using LASI) and then simulate the circuit using
  14.   SPICE. After having done the layout, you can then go back and let LASICKT
  15.   produce a SPICE circuit file again from the layout, including any
  16.   parasitic effects that may have been introduced.
  17.  
  18.   This version of LASICKT.EXE is a new 32-bit version that will work with
  19.   drawings made using LASI 5.1. It will use extended memory for large
  20.   numbers of objects in a drawing. It may also run slower than previous
  21.   versions because it may have to check a drawing at a finer resolution.
  22.  
  23.   SPICE code will be written for circuits with individual devices, and any
  24.   subcircuit definitions that may be necessary will also be created.
  25.  
  26.   In addition to writing a SPICE circuit file, LASICKT also writes a
  27.   network file that lists the nodes and their device connections. This can
  28.   be used to check for missing or open connections between a schematic and
  29.   a layout.
  30.  
  31.   Circuit nodes can be marked explicitly, or LASICKT can automatically find
  32.   nodes on a layout or schematic. The program also can look for certain
  33.   types of shorts and open connections, and in a rudimentary way calculate
  34.   the capacitance of interconnections.
  35.  
  36.   LASICKT uses normal LASI text objects to mark nodes and to pass device
  37.   name and parameter information to the SPICE code. Both header and footer
  38.   text files may be appended automatically to the generated SPICE circuit
  39.   file. These files may contain extra information such as model and
  40.   subcircuit definitions or operating statements.
  41.  
  42.   LASICKT has a very good use: it can be used to verify that an IC will
  43.   probably work after the layout has been completely drawn. LASICKT
  44.   therefore allows "heuristic processing" for students using LASI as an
  45.   educational tool.
  46.  
  47.   The SPICE code produced by LASICKT is written for use with PSpice. If
  48.   incompatible with another SPICE that you may be using, or if you have a
  49.   particular problem with the way that LASICKT works, contact the author
  50.   for possible fixes, advice or improvements. Since doing what LASICKT does
  51.   is no trivial task, expect future changes.
  52.  
  53. How LASICKT Works
  54.  
  55.  The Basic Idea
  56.  
  57.   LASICKT works by placing text on specific layers at specific locations in
  58.   a LASI drawing.
  59.  
  60.   In a LASI drawing of an IC or electrical circuit, the circuit devices are
  61.   simply cells interconnected with lines or areas. To mark how a circuit is
  62.   connected you use text on two different layers. The two types of text are
  63.   called NODE NAMES and CONNECTORS.
  64.  
  65.   Node Names give the lines and areas used for interconnection in a circuit
  66.   a definite name. Without a node name, LASICKT will make up a "virtual"
  67.   name.
  68.  
  69.   Connectors locate the "connection points" on a cell and pass that
  70.   location to higher ranking cells where that particular cell is being
  71.   connected as part of a larger circuit.
  72.  
  73.   This may be diagrammed as follows:
  74.   ≡≡14
  75.  
  76.                 CONNECTOR to
  77.                | next cell up      NODE (Named or Virtual)
  78.                |     /             /    (marks interconnection with name)
  79.                |   /             /
  80.             ┌──|─/─────────────/──────┐
  81.             │  ■C2           ■N1      │ Higher Rank Cell Interconnect Area
  82.             └────────────────────────┘
  83.              Position   |   CONNECTOR Text (marks connection)
  84.              Passed Up  |   /
  85.                ┌────────|─/─────────┐
  86.                │        ■C1         │ Lower Rank Cell Interconnect Area
  87.                └────────────────────┘
  88.  
  89.   In the above, connector C1 is connected to node N1 in the higher cell.
  90.  
  91.  
  92.   This process of passing connections can be extended to the full depth of
  93.   cell nesting. Cell nesting in LASI is similar to the way that SPICE
  94.   works, that is, SPICE arranges devices into subcircuits which correspond
  95.   to LASI's cells. LASICKT's NODES (named or virtual) correspond to what
  96.   SPICE calls nodes, however CONNECTORS are graphical entities that have no
  97.   real equivalent in SPICE.
  98.  
  99.   SPICE code also requires that you give devices NAMES and pass certain
  100.   device PARAMETERS. To indicate device names and parameters you use two
  101.   additional layers and write the text directly on the cells. The text is
  102.   literally passed on to the SPICE code.
  103.  
  104.   LASICKT uses text written on a total of four different layers to control
  105.   the SPICE code that it generates.
  106.  
  107.  Device Definition Statements
  108.  
  109.   A device statement in SPICE can be considered to have three fields.
  110.   LASICKT builds a device definition by filling in these fields using text
  111.   that it finds on a drawing:
  112.   ≡≡4
  113.                         ┌──────┬───────┬───────┐
  114.                         │ NAME │ NODES │ PARAM │
  115.                         └──────┴───────┴───────┘
  116.  
  117.   NAME is the a predefined device name beginning with R,C,Q, etc. It may
  118.   also be a subcircuit name starting with X. NAME may also include a logic
  119.   device type (NAND(2) for example). When you use LASICKT this text is
  120.   placed on the "Device Name Text Layer" and is passed to the definition as
  121.   the first field.
  122.  
  123.   NODES is a sequence of node names that LASICKT constructs, and is placed
  124.   second in the SPICE definition. The node names are determined from node
  125.   name text and any virtual node names.
  126.  
  127.   PARAM is text placed on a "Parameter Text Layer". It is passed literally
  128.   to the last field. This contains such things as MODEL and SUBCKT names
  129.   and adjustable parameters. This text can become pretty wordy so multiple
  130.   lines are allowed.
  131.  
  132.  Devices, Subcircuits and Cells
  133.  
  134.   It is important to understand how SPICE devices translate from LASI
  135.   cells. LASI's boxes and paths are NOT devices; they only serve to connect
  136.   things together (on interconnect layers). A minimum device is a rank 1
  137.   cell. For example, a single NPN transistor, whether drawn as a symbol or
  138.   a layout figure is a simple device (Q-type). A NAND gate even though it
  139.   may have several transistors and resistors is a single U-type device.
  140.  
  141.   If several devices are connected together they form a subcircuit
  142.   (SUBCKT), which can be used as an X-type device. A LASI cell must be at
  143.   least rank 2 to become a subcircuit since it must contain other cells.
  144.  
  145.   To add to the confusion, there is no reason why you can't define a SUBCKT
  146.   separately, and include it as a rank 1 cell in a cell of rank 2 or
  147.   greater.
  148.  
  149.   You can conclude however that rank 1 cells will contain no nodes or node
  150.   name text, since they have no devices to interconnect. (There is an
  151.   exception with global symbols explained below.) Rank 1 cells will however
  152.   have connector text to tell any higher cells where to connect to them.
  153.  
  154.   A rank 2 cell will normally have nodes that connect its devices or cells
  155.   together. If a rank 2 or greater cell is the "top" cell it will have no
  156.   connectors; otherwise it will have connectors to connect itself to the
  157.   cell above it.
  158.  
  159.   A top cell will always have node names on its external connections so
  160.   that it can be properly referenced for input and output.
  161.  
  162. Types of Text
  163.  
  164.  Node Name Text
  165.  
  166.   Node name text is LASI text that labels an object (box, path, polygon or
  167.   line) that is used for interconnection with a definite name.
  168.  
  169.   Applying certain rules, LASICKT finds just which objects on a certain
  170.   layer are connected geometrically together into what might be called a
  171.   "node island", and gives them the node name that labels (at least) one of
  172.   them. These node names are placed directly in the SPICE code. Named nodes
  173.   are only "seen" by LASICKT within the cell that contains those objects.
  174.  
  175.  Virtual Nodes
  176.  
  177.   If it finds connections without a node name, LASICKT is smart enough to
  178.   make up its own name for a node. Once LASICKT has looked for all possible
  179.   associations between node name text and lines and areas, it will make up
  180.   a "virtual" node name for any lines or areas that remain. This is not
  181.   actual drawing text, but a number with a prefix you can choose. As with
  182.   node name text, these node names will be placed in the SPICE code.
  183.  
  184.   Note: Once one or more objects are found by LASICKT to be a single node
  185.     island and they have been given a node name (text or virtual), those
  186.     objects collectively can be called a "node", which is what SPICE
  187.     actually refers to as a node.
  188.  
  189.  Connector Text
  190.  
  191.   Connectors MUST be placed on a layer different from node name text.
  192.  
  193.   Connector text "communicates" the nodes of a cell up to a higher rank
  194.   cell that contains that cell. In the higher cell, the connector is
  195.   "attached" to an object that is used for interconnection. Connectors are
  196.   only "seen" by LASICKT in the higher ranking cell.
  197.  
  198.   Connectors locate the "electrical connection points" in a cell, and are
  199.   normally placed on a cell in locations that "electrically connect" to the
  200.   outside world.
  201.  
  202.   Connector text MUST contain a SEQUENCE NUMBER in the text that indicates
  203.   the RELATIVE ORDER of the nodes in the SPICE device definition statement.
  204.  
  205.   For example, an NPN transistor might have the connectors "1-C", "2-B",
  206.   and "3-E" that correspond to the SPICE transistor device's node order.
  207.   The number of the connector will be taken from the first digit found in
  208.   the text, that is, "1-C" and "C-1" are equivalent.
  209.  
  210.   At the moment, 64 connectors are permitted on a single cell, and a total
  211.   of 2048 connectors may be passed to the next higher cell.
  212.  
  213.   Note: Different cells can use the same connector text and sequence
  214.     numbers, since only the relative order of the sequence numbers in a
  215.     particular cell is important.
  216.  
  217.  Name and Parameter Text
  218.  
  219.   SPICE requires devices to be named, and also needs various parameters to
  220.   be included in device definition statements. LASI text may be used to
  221.   pass literal text information to SPICE definitions. Two different layers
  222.   are used to pass DEVICE NAMES and DEVICE PARAMETERS independently. You
  223.   simply write this information on your drawing and it is passed to SPICE.
  224.  
  225.   Since a cell is a device, to pass text to SPICE, you place the text
  226.   reference point within the OUTLINE of the cell. This associates the text
  227.   with that cell only. Be careful not to put text on more than one cell or
  228.   it will be passed to all.
  229.  
  230.   If you put device text IN a cell but not ON any lesser cells, the text is
  231.   used to construct a SUBCKT if the cell is not the top cell.
  232.  
  233.   A drawing that is to be processed by LASICKT is therefore a well
  234.   documented drawing, since each cell will have information about itself
  235.   written directly on it.
  236.  
  237.  Global Symbol Cells
  238.  
  239.   As a compromise with standard practice used in schematics, LASICKT allows
  240.   you to make rank 1 cells into little objects that act like box objects
  241.   that may be used to interconnect devices. The difference is that they
  242.   carry around a node name and a little picture.
  243.  
  244.   The best example is a ground symbol. To SPICE this is a global node "0",
  245.   but when you use it in a drawing it connects to only one point. It
  246.   therefore labels a node as grounded, but connects nowhere else.
  247.  
  248.   To make a global symbol you take a rank 1 cell and place NODE NAME text
  249.   on it. You place NO CONNECTOR text on it as you would do normally to
  250.   connect to the cell. The OUTLINE of the cell becomes equivalent to a box
  251.   of the same dimensions, and if a connector from another cell falls in
  252.   that area, the cell's connector is labeled with that symbol's node name.
  253.  
  254.   For example, if a ground symbol cell overlays a connector on a
  255.   transistor's emitter, and if that symbol cell has "0" on the node name
  256.   layer written on it, that emitter is then set at node "0", and forever
  257.   grounded.
  258.  
  259.   Note: Any global node names other than "0" should be declared in a
  260.     .GLOBAL statement in the SPICE file.
  261.  
  262. Text Placement Rules
  263.  
  264.  Node Name Text Rules
  265.  
  266.   For named node text to label drawing objects, the text must be located so
  267.   that the text can be uniquely identified. The following rules apply to
  268.   the placement of node name text:
  269.  
  270.   1. Text is always located by its reference point and is independent of
  271.      the size of the text or its orientation.
  272.  
  273.   2. Node name text must be located on objects that are on one of the
  274.      layers used for interconnection as follows:
  275.  
  276.     For boxes, the text reference must be ON an edge or WITHIN the area of
  277.     the box.
  278.  
  279.     For paths WITH WIDTH, the text reference must be WITHIN the path area
  280.     or ON a horizontal or vertical edge.
  281.  
  282.     For OPEN paths WITHOUT WIDTH (lines), the text reference must be ON a
  283.     vertex or WITHIN a horizontal or vertical segment.
  284.  
  285.     For closed paths WITHOUT WIDTH (polygons), the reference must be WITHIN
  286.     the area of the polygon.
  287.  
  288.  Connector Text Rules
  289.  
  290.    Connector text can be located anywhere, but should be located where
  291.    actual electrical connection is to be made in a layout or schematic.
  292.    There is NO checking that an actual electrical connection is made or
  293.    that any design rules ar obeyed. Connector text follows these rules:
  294.  
  295.   1. Connector text MUST ALWAYS be connected (or attached) to an object
  296.      used for interconnection in the NEXT HIGHER CELL. If not, you will get
  297.      an "Open" error when you run the program.
  298.  
  299.   2. A connector is attached to a node in the NEXT HIGHER CELL following
  300.      the same rules as node name text listed above.
  301.  
  302.   3. If you place a NODE NAME text reference point EXACTLY on the CONNECTOR
  303.      text reference of the cell below it, the connector will connect to the
  304.      node. This has a very handy if you want to connect to a point that is
  305.      not on an interconnect layer. An example would be connecting the
  306.      substrate of a transistor which normally has no metallized connection.
  307.  
  308.  Passed Text Rules
  309.  
  310.   For text to be passed to the SPICE code, certain rules must be followed:
  311.  
  312.   1. Device name and parameter text must be located on two different layers
  313.      that are different from the node or connector text layers.
  314.  
  315.   2. The text reference must be located WITHIN or ON the OUTLINE of a
  316.      lesser cell to be passed that SPICE device.
  317.  
  318.   3. If a PARAMETER text reference is NOT on the OUTLINE of ANY cell, it
  319.      will be passed to the SUBCKT definition if the overall cell is made
  320.      into a SUBCKT.
  321.  
  322.   4. LASI text is up to 40 characters long. If more is needed multiple
  323.      lines must be used.
  324.  
  325.   5. Text on multiple lines will be assembled into a single line in a
  326.      descending Y order.
  327.  
  328.   6. If a "+" is placed at the beginning of a text string a new line
  329.      (CR-LF) will be inserted, which corresponds to SPICE convention.
  330.  
  331.   7. If a "*" is placed at the beginning of a text string a new line will
  332.      be inserted. This lets you put comments in the SPICE code.
  333.  
  334.   8. Each text line will have a SPACE inserted after it, so that on
  335.      multiple lines you don't have to put spaces in your text.
  336.  
  337. Interconnection Rules
  338.  
  339.  Interconnection Rules
  340.  
  341.   LASICKT connects objects (boxes, paths, polygons and lines) following
  342.   these rules:
  343.  
  344.   1. Objects must be in the same cell and be on the same layer or layer
  345.      group to connect.
  346.  
  347.   2. Several interconnect layers may be listed in the program setup. If
  348.      they are listed separated by spaces they are all independent and do
  349.      not connect to each other.
  350.  
  351.   3. If layers are listed separated by spaces but in a GROUP enclosed in
  352.      PARENTHESES, they all interconnect as if they were a single layer.
  353.  
  354.   4. Boxes, paths with width and closed polygons are all AREAS.
  355.  
  356.   5. Areas connect if they overlap or are contiguous on a horizontal or
  357.      vertical edge.
  358.  
  359.   6. Open paths without width are LINES.
  360.  
  361.   7. Lines connect if they have ANY vertices that are coincident.
  362.  
  363.   8. Lines connect if a vertex of one falls WITHIN a horizontal or vertical
  364.      segment of the other, as in a "T" or an "L". This is normal schematic
  365.      convention.
  366.  
  367.  
  368.   If an interconnection has to go through some kind of a crossover
  369.   structure on a different layer (a polysilicon underpass for example in an
  370.   IC), you must do one of the following:
  371.  
  372.   ■ Place the same node name on the interconnect objects on both sides of
  373.     the crossover to indicate that it is the same electrical node. If the
  374.     crossover object is also used for connection, put the same node name
  375.     text on that object or on the overlap, and list that object's layer as
  376.     an interconnect layer. Do not list the different layers in a group in
  377.     parentheses, or they will short out if one layer crosses another.
  378.  
  379.   ■ Make the crossover into a cell and give the end nodes different node
  380.     name text, or leave off the node name and allow them to be virtual
  381.     nodes.
  382.  
  383.   The latter is useful if the crossover has some electrical effect, such as
  384.   significant resistance. Also note that you can't put the crossover and
  385.   the interconnect layer in a group enclosed by parentheses, because they
  386.   will short out.
  387.  
  388.   LASICKT does not know how to trace through different layers in an IC to
  389.   determine connections since it is not "process specific".
  390.  
  391. Capacitance
  392.  
  393.  Capacitance
  394.  
  395.   LASICKT will calculate the approximate parasitic capacitance of the
  396.   interconnect layers to ground, and add a capacitor device to the SPICE
  397.   code. For the moment this is the same for all layers, but may be made
  398.   layer dependent in the future if it really proves valuable. LASICKT
  399.   calculates all the areas, but ignores overlaps. Lines used in schematics
  400.   are ignored.
  401.  
  402.   The capacitance is in pF per square physical unit that you used to do
  403.   your drawing, i.e. pF/sq-um typically.
  404.  
  405.   The parasitic capacitor will be named "C_NODE", where NODE is the node
  406.   name text that labels the areas.
  407.  
  408. Running LASICKT
  409.  
  410.  LASICKT Setup
  411.  
  412.   When you first run LASICKT from the DOS command line, it will come up in
  413.   a setup screen. The setup is saved as LASICKT.SET and returned when you
  414.   run the program again. The setup parameters are as follows:
  415.  
  416.   ■ Name of the Cell. This is the main cell that you want analyzed and
  417.     converted. The program will produce a SPICE file with the extension
  418.     ".CIR" using this cell name. The net list file will be written with the
  419.     cell name but with a ".NET" extension.
  420.  
  421.   ■ Header and Footer Files. These are the names of files you may want to
  422.     include in the SPICE file. These filenames may be "global" files used
  423.     with several drawings and therefore may include a path. These files may
  424.     contain such things as .MODEL definitions of your devices. These are
  425.     completely arbitrary and may be omitted by simply putting in a name of
  426.     a file that doesn't exist or leaving the name blank by entering only a
  427.     space character.
  428.  
  429.   ■ Interconnect Layers. These are the layers that are used for connecting
  430.     devices, if more than one. These numbers should be separated by a space
  431.     and groups may be enclosed by parentheses to allow more than one layer
  432.     to connect. For example,"2 (4 8)" will connect 2 independently, but 4
  433.     and 8 will connect together. You may enter a maximum of 8 layers or 8
  434.     groups of up to 8 layers.
  435.  
  436.   ■ Interconnect Capacitance. This is the approximate unit capacitance of
  437.     the interconnect layers to ground. The capacitance is in pF per square
  438.     physical unit that you used in your drawing, i.e. pF/sq-um typically.
  439.     If you make this parameter equal to zero (0). the program will run
  440.     faster because it will not bother to calculate the areas of the various
  441.     interconnections.
  442.  
  443.   ■ Named Node, Connector, Device Name and Parameter Text Layers. These are
  444.     the layers that you used for those respective text in your drawing. All
  445.     must be different layers, and all must be layer 1-64.
  446.  
  447.   ■ Error Switches. These are used to control error checking and reporting.
  448.     These are explained separately below.
  449.  
  450.   ■ Virtual Node Prefix. This is the name of any virtual nodes to which a
  451.     number will be added. This should be short as possible, and case is
  452.     preserved.
  453.  
  454.   ■ Error Destination. This allows you to print or save any errors that are
  455.     found. The parameter must be one of the printers "LPT1", "LPT2", "LPT3"
  456.     or "PRN" (=LPT1), "FILE" for the file LASICKT.ERR or leave it blank for
  457.     no report. With no report option, the program pauses so that you can
  458.     read the error.
  459.  
  460.   To run LASICKT after the setup, press ALT-G or click "Go".
  461.  
  462.   To abort at any time, press ESC.
  463.  
  464.  
  465.  Error Switches
  466.  
  467.   The final setup line contains four yes/no switches. These control the
  468.   following error checks:
  469.  
  470.   Opens
  471.  
  472.   If LASICKT finds that a connector on a cell is "open" it will warn you.
  473.   To be connected, the connector must be attached to an interconnect layer
  474.   in the higher ranking cell where the cell is used. Attaching a global
  475.   symbol or putting a node exactly on the connector will also satisfy the
  476.   connection. This is an error that is easy to make.
  477.  
  478.   An "open" connector will be written to the SPICE code as a "?", since
  479.   there will be no node name available.
  480.  
  481.   When you are satisfied that there are no actual errors, you can set this
  482.   to "N".
  483.  
  484.  
  485.   Shorts
  486.  
  487.   If LASICKT finds two objects connected but with different node names, it
  488.   will report it as a "short". SPICE code will still be written, but it
  489.   could have a node conflict that your SPICE analysis program should
  490.   eventually discover.
  491.  
  492.   You might see the same error twice. LASICKT cross checks, so that if one
  493.   object connects to a second, the second will also be found to connect to
  494.   the first.
  495.  
  496.   A second way you can have a short is if you put more than one connector
  497.   with the same sequence number on a cell. This is permitted, but it
  498.   possible to connect different nodes to the same actual connector. The
  499.   error message will indicate the cell and the position.
  500.  
  501.   If you are sure that there are no shorts, set this to "N" and the program
  502.   will run faster because the number of objects checked will be greatly
  503.   reduced.
  504.  
  505.   IMPORTANT: Shorts checking on interconnections should not be confused
  506.     with checking for shorts on an overall layout. LASICKT checks for node
  507.     naming conflicts, not actual shorts, since it really doesn't know how a
  508.     circuit is to be connected. It checks only at a single cell level, and
  509.     not the composite of several cell nestings.
  510.  
  511.  
  512.   Floats
  513.  
  514.   This indicates that a cell exists that is not attached to anything in the
  515.   circuit. This will detect cells that you forgot to connect, or such
  516.   things as test transistors that would not be normally connected.
  517.  
  518.   Turn off the warning message with "N" if you have a problem. Failure of
  519.   this test is just a warning since the floating device will not appear in
  520.   the SPICE code.
  521.  
  522.  
  523.   Devices
  524.  
  525.   This checks if a device definition statement contains both device name
  526.   and device parameter text. All SPICE devices require that you specify the
  527.   device name and almost all devices have parameters of some kind. This
  528.   does not check the correctness of the text, just if it is present. A
  529.   SPICE statement will contain "???" if device text is missing.
  530.  
  531.   Turn this test off with "N" if it causes any problems. Failure of this
  532.   test usually incorrect device statements.
  533.  
  534.  Run Operations
  535.  
  536.   As LASICKT analyzes a drawing it will indicate what it is doing in the
  537.   "Operations" box. It will show the name of the cell and the particular
  538.   operation. Any error warning messages will appear in the "Messages" box.
  539.  
  540.   A count of the devices, nodes and connectors will be displayed in the
  541.   "Counts" box. This is useful to see just what LASICKT has found, and to
  542.   verify just what you think it should find. This is explained below.
  543.  
  544.   LASICKT will first search for global symbols in the drawing cell
  545.   collection. Then, for the main circuit and each possible subcircuit, it
  546.   will search for the nodes that you have named, and then it will try to
  547.   connect the objects on the interconnect layers. It will then try to
  548.   create and connect any virtual nodes that may be needed. Connecting
  549.   virtual nodes takes somewhat longer.
  550.  
  551.   Whenever LASICKT looks for interconnections it does multiple passes,
  552.   extending connections one at a time, until it finds no more.
  553.  
  554.   Hint: To speed things up, use named nodes, not virtual nodes, unless you
  555.     have a fast computer or can wait. Every time a virtual node is created
  556.     there has to be a complete search of all interconnections.
  557.  
  558.   Finally, once it has learned enough about your drawing, the program will
  559.   write SPICE code to the .CIR output file, and will write network list
  560.   information to the .NET file. This will be done in stages, depending on
  561.   any subcircuits.  Each cell listed as being analyzed will be translated
  562.   into either the main circuit or into a subcircuit definition.
  563.  
  564.  Count Listing
  565.  
  566.   While LASICKT is running it gives a count of several things:
  567.  
  568.   ■ Devices is the number of SPICE devices found in the cell being
  569.     analyzed. It is actually the number of cells in the cell. These would
  570.     correspond to basic devices (transistors, resistors, etc.) and
  571.     subcircuits (X-type devices).
  572.  
  573.   ■ Nodes are listed by (Nam)ed, (Vir)tual and (Total). The named nodes are
  574.     found first and then the virtual nodes are generated. The total will be
  575.     the actual number of different nodes that will be identified in the
  576.     main circuit or subcircuit.
  577.  
  578.   ■ Connectors are listed by (Cnt) or Count, which is the number of
  579.     Connector Text instances that have been found on the cells below the
  580.     cell being analyzed. This number is broken down into what kind of nodes
  581.     they connect to in the analyzed cell. (Nam) is the number assigned to
  582.     named nodes, (Vir) is the number assigned to virtual nodes and (Sym) is
  583.     the number of connectors assigned to global symbols. The (Total) is
  584.     then the sum of all the named, virtual and symbol nodes connected to
  585.     the connectors. This should be equal to the initial Count.
  586.  
  587. Using Net Lists
  588.  
  589.  The Net List File
  590.  
  591.   When LASICKT finishes writing SPICE code statements for a circuit, it
  592.   resorts the information and uses it to write a list of nodes and their
  593.   connections in the Net List File. The name of this file is the main cell
  594.   name with the extension ".NET". Each node name is followed by the device
  595.   names and the connector sequence number for each device connection. The
  596.   name and number are separated by a period. "R2.1" for example says that
  597.   connector 1 of device R2 is connected to a particular node.
  598.  
  599.   The main circuit and any subcircuits are listed independently. Remember
  600.   that node names are local and belong only to the circuit in which they
  601.   appear, (except for global nodes) and should not be confused with similar
  602.   node names in different circuits.
  603.  
  604.  Net List Compare
  605.  
  606.   If you want to compare two network lists, a program NETCOMP.EXE is
  607.   supplied. This program looks at two list files (schematic and layout) and
  608.   indicates errors where node connections in the first file are missing on
  609.   the same node in the second file. This should indicate a wrong connection
  610.   in the layout, assuming that the schematic is correct.
  611.  
  612.   NETCOMP then interchanges the list files and checks in reverse (layout to
  613.   schematic), finding any connections in the first file that are not in the
  614.   second.
  615.  
  616.   The names of nodes and connectors are case independent. It is however
  617.   necessary that schematic and layout nodes, connectors, and devices be
  618.   named exactly the same, or an error will be reported. If you let LASICKT
  619.   add its own virtual nodes, there is no guarantee that nodes will be named
  620.   the same in schematic and layout. To avoid this problem, you need to put
  621.   Node Name Text on all your nodes.
  622.  
  623.   NETCOMP is a new program, so any comments will be appreciated as to the
  624.   best strategy that should be used to do net list comparisons.
  625.  
  626. An Example
  627.  
  628.  An Example
  629.  
  630.   The best way to see how LASICKT works is to have an example. The LASI
  631.   tutorial layout (compressed in TUTOR.ZIP) contains a layout of a small
  632.   opamp (OPAMP) and a schematic ($OPAMP). This has been marked with text so
  633.   that LASICKT can process it.
  634.  
  635.   The node names are on layer 60, connectors 61, device names 62 and
  636.   parameters are on layer 63. Interconnections are metal on layer 8 for the
  637.   layout and 32 for the schematic. There is also a global cell used for the
  638.   ground symbol. The PNP current source is a separately defined SUBCKT that
  639.   can be found in OPHDR.LIB.
  640.  
  641.   Notice that only a few nodes are marked. The rest are virtual nodes. This
  642.   is probably what would normally be done by someone using LASICKT.
  643.  
  644.   You only need to use text if you want to force a name. (such as "0")
  645.  
  646.   You can run LASICKT on OPAMP or $OPAMP and see what is produced. You will
  647.   find a few intentional errors - try to fix them.
  648.  
  649.   If you do run LASICKT on OPAMP and $OPAMP, the net list produced will not
  650.   agree. Trying to make the lists agree when read by NETCOMP is left as a
  651.   learning exercise.
  652.  
  653. Using a Flat Drawing
  654.  
  655.  Using a Flat Drawing
  656.  
  657.   LASICKT can be used to check for wrong connections in layouts more
  658.   effectively if the layout is "flat", that is, all the interconnecting
  659.   layers are in a single main cell. The basic nature if SPICE hierarchy
  660.   generally precludes this because devices are usually nested in SUBCKT
  661.   modules, or in a layout as LASI cells. A program FLATTLC has been added
  662.   to LASI 5.1 which will take a main cell and its lesser cells in TLC
  663.   format and convert to a single large flat TLC file. When converted back
  664.   to internal form, this new flat cell can be used by LASICKT to do more
  665.   complete checking. The disadvantages of using a flat cell are first, the
  666.   complete cell may have too many objects and exceed the limits that LASI
  667.   can use as an internal cell, and second, running LASICKT on a large
  668.   number of objects can take a long time, unless you have a very fast PC.
  669.  
  670.   When LASICKT compiles a SPICE circuit file, it must find devices or
  671.   SUBCKTs represented as cells in the drawing. All LASICKT really needs is
  672.   the LOWEST level of nested cells and any connector and device (name and
  673.   parameter) text located on the cells.
  674.  
  675.   To better understands this, consider if LASICKT finds a cell in the
  676.   drawing that has other cells nested in it. LASICKT will define this cell
  677.   as a SUBCKT with the lesser cells represented as device or subcircuit
  678.   statements within it. If you were to expand every SUBCKT, eventually, all
  679.   subcircuits would break down to the lowest device definitions, unless
  680.   they are externally defined in a LIB file. (PSRC1 in the tutorial opamp
  681.   is one of these.)
  682.  
  683.   FLATTLC replaces SUBCKT definitions with their components until only
  684.   cells representing devices remain. It then breaks down these cells into
  685.   their basic objects (boxes, paths and text) and makes a token device cell
  686.   containing any connector text. It also adds a box object that is the same
  687.   size as the outline (from the TLC header) of the original cell. This
  688.   keeps the cell outline the same so that device name and parameter text
  689.   can be found by LASICKT correctly.
  690.  
  691.   FLATTLC also removes any device name and parameter text that is NOT one
  692.   nested level up and is NOT located within the outline of a token device
  693.   cell. This eliminates possible conflicts from device name and parameters
  694.   on subcircuits which contain the lowest devices.
  695.  
  696.   FLATTLC will also remove ALL node name text EXCEPT that which is in the
  697.   main flattened cell. Generally, you may not use the same node names in
  698.   nested subcircuits. If LASICKT compiles a flat cell, it will signal a
  699.   short error if all node names are not exactly the same on contiguous
  700.   interconnects.
  701.  
  702.   Notice that after a drawing is flattened, it is really simpler in certain
  703.   ways: It has only rank 1 token device cells and all interconnections are
  704.   just basic objects on one or more fixed layers. How devices are connected
  705.   is immediately obvious (to LASICKT), and connections to devices are made
  706.   by a single level of connector text in each cell. There will also be only
  707.   a single level of device name and parameter text located on token device
  708.   cells. All other connector, device name and parameter text on higher
  709.   nested cells in the original drawing will have been removed.
  710.  
  711.  
  712.   There are at least two ways you can use a flattened cell to check for
  713.   design and layout errors:
  714.  
  715.   1. You can run LASICKT on it as is, and let SPICE analyze it for correct
  716.      functioning. LASICKT will make named nodes from any contiguous named
  717.      interconnect objects and virtual nodes from contiguous unnamed
  718.      objects.
  719.  
  720.   2. You can put in NODE NAMES on ALL interconnect areas at the MAIN CELL
  721.      level in the original unflattened drawing and let LASICKT look for
  722.      shorts in the flattened drawing. Once flattened, named nodes that
  723.      wrongly connect become very obvious to LASICKT and are caught as
  724.      shorts.
  725.  
  726. Parameter Line Editor
  727.  
  728.  Parameter Line Editor
  729.  
  730.   LASICKT now uses a simple line editor that resembles the editor used with
  731.   Windows. The editor operates as follows:
  732.  
  733.   ■ To move from parameter to parameter, press the UP/DOWN ARROW keys,
  734.     (SHIFT)TAB, or click the mouse on a parameter.
  735.  
  736.   ■ Press PGUP/PGDN to move to the first or last parameter.
  737.  
  738.   ■ Press LEFT/RIGHT ARROW to move the text cursor left or right.
  739.  
  740.   ■ Press HOME/END to move the cursor to the beginning or end of a line.
  741.  
  742.   ■ Press BACKSPACE to erase a character to the left of the cursor.
  743.  
  744.   ■ Press DELETE to erase the character to the right of the cursor.
  745.  
  746.   ■ Press CTRL-BACKSPACE to completely erase a text line with the cursor at
  747.     any position.
  748.  
  749.   ■ When you first select a parameter, typing any printable character other
  750.     than SPACE or LEFT/RIGHT ARROW will replace the whole text line.
  751.  
  752.   ■ If you make a mistake press ESC to restore the original text.
  753.  
  754.